import { formatDate } from '../utils';

export const names = [
  '史萱',
  '景鸿',
  '宫昌淼',
  '空曜曦',
  '裘语',
  '施昌',
  '巢之',
  '法亦凝',
  '仲凝',
  '谢昆鹏',
  '扶晖',
  '寇光济',
  '吕忆香',
  '红鸿博',
  '暴易',
  '贝易文',
  '甄煊',
  '益彤',
  '濮安珊',
  '丘昊明',
  '佟秋',
  '颜书',
  '景辰皓',
  '宫光之'
];
/**
 * @description: mock数据时防止数据的实时变化导致参数异常而做出clone处理
 * @param {*} data
 * @return {*}
 */
export const cloneData = (data) => {
  try {
    return JSON.parse(JSON.stringify(data));
  } catch (err) {
    return data;
  }
};

/**
 * @description: 范围内取随机整数
 * @param {number} max
 * @param {number} min
 * @return {*}
 */
export const randomInt = (max: number = 500, min: number = 10) => Math.floor(Math.random() * (max - min + 1)) + min;

/**
 * @description: 数组内取随机一项
 * @param {any} arr
 * @return {*}
 */
export const getRandomForArr = (arr: any[]) => arr[Math.floor(Math.random() * arr.length)];

/**
 * @description: 当前时间格式化
 * @return {*}
 */
export const now = formatDate(new Date());

/**
 * 生成一个在指定范围内的随机日期
 * @param {Date} start - 起始日期
 * @param {Date} end - 结束日期
 * @returns {Date} - 随机日期
 */
const getRandomDate = (start, end) => {
  const startTime = start.getTime();
  const endTime = end.getTime();
  const randomTime = Math.random() * (endTime - startTime) + startTime;
  return new Date(randomTime);
};

/**
 * 生成一年内的 N 个随机日期
 * @param {number} N - 需要生成的随机日期数量
 * @returns {Date[]} - 包含 N 个随机日期的数组
 */
export const getRandomDatesInYear = (N) => {
  const today = new Date();
  const startOfYear = new Date(today.getFullYear(), 0, 1);
  const endOfYear = new Date(today.getFullYear() + 1, 0, 1);
  const dates = new Set();
  while (dates.size < N) {
    const randomDate = getRandomDate(startOfYear, endOfYear);
    const formattedDate = randomDate.toISOString().split('T')[0];
    dates.add(formattedDate);
  }

  return Array.from(dates);
};
